<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/xhtml;charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=9" http-equiv="X-UA-Compatible"/>
<meta content="Doxygen 1.8.13" name="generator"/>
<title>OpenCV: Global Motion Estimation</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script src="../../jquery.js" type="text/javascript"></script>
<script src="../../dynsections.js" type="text/javascript"></script>
<script src="../../tutorial-utils.js" type="text/javascript"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script src="../../search/searchdata.js" type="text/javascript"></script>
<script src="../../search/search.js" type="text/javascript"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" type="text/javascript"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css"/>
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellpadding="0" cellspacing="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
    <span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script src="../../menudata.js" type="text/javascript"></script>
<script src="../../menu.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onkeydown="return searchBox.OnSearchSelectKey(event)" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe frameborder="0" id="MSearchResults" name="MSearchResults" src="javascript:void(0)">
</iframe>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Global Motion Estimation<div class="ingroups"><a class="el" href="../../d5/d50/group__videostab.html">Video Stabilization</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/db3/classcv_1_1videostab_1_1FromFileMotionReader.html">cv::videostab::FromFileMotionReader</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d06/classcv_1_1videostab_1_1GaussianMotionFilter.html">cv::videostab::GaussianMotionFilter</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dd1/classcv_1_1videostab_1_1ImageMotionEstimatorBase.html">cv::videostab::ImageMotionEstimatorBase</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class for global 2D motion estimation methods which take frames as input.  <a href="../../d4/dd1/classcv_1_1videostab_1_1ImageMotionEstimatorBase.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/df6/classcv_1_1videostab_1_1IMotionStabilizer.html">cv::videostab::IMotionStabilizer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/dec/classcv_1_1videostab_1_1KeypointBasedMotionEstimator.html">cv::videostab::KeypointBasedMotionEstimator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Describes a global 2D motion estimation method which uses keypoints detection and optical flow for matching.  <a href="../../d5/dec/classcv_1_1videostab_1_1KeypointBasedMotionEstimator.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d59/classcv_1_1videostab_1_1LpMotionStabilizer.html">cv::videostab::LpMotionStabilizer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/df1/classcv_1_1videostab_1_1MotionEstimatorBase.html">cv::videostab::MotionEstimatorBase</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class for all global motion estimation methods.  <a href="../../db/df1/classcv_1_1videostab_1_1MotionEstimatorBase.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d29/classcv_1_1videostab_1_1MotionEstimatorL1.html">cv::videostab::MotionEstimatorL1</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Describes a global 2D motion estimation method which minimizes <a class="el" href="../../d4/d7f/structcv_1_1L1.html">L1</a> error.  <a href="../../d7/d29/classcv_1_1videostab_1_1MotionEstimatorL1.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/dbe/classcv_1_1videostab_1_1MotionEstimatorRansacL2.html">cv::videostab::MotionEstimatorRansacL2</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Describes a robust RANSAC-based global 2D motion estimation method which minimizes <a class="el" href="../../dc/daa/structcv_1_1L2.html">L2</a> error.  <a href="../../d6/dbe/classcv_1_1videostab_1_1MotionEstimatorRansacL2.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/df4/classcv_1_1videostab_1_1MotionFilterBase.html">cv::videostab::MotionFilterBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d76/classcv_1_1videostab_1_1MotionStabilizationPipeline.html">cv::videostab::MotionStabilizationPipeline</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html">cv::videostab::RansacParams</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Describes RANSAC method parameters.  <a href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/dc1/classcv_1_1videostab_1_1ToFileMotionWriter.html">cv::videostab::ToFileMotionWriter</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gac61e59db30b7d13983885d3ad3116ce1"><td align="right" class="memItemLeft" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#gac61e59db30b7d13983885d3ad3116ce1">cv::videostab::MotionModel</a> { <br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1ad150f24197611b08a99e45c5a93ef264">cv::videostab::MM_TRANSLATION</a> = 0, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a3d76e30fb2c762645cbd8c83b2d4d556">cv::videostab::MM_TRANSLATION_AND_SCALE</a> = 1, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a2765d1659d5a36bdd1c356396a624ae1">cv::videostab::MM_ROTATION</a> = 2, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a633545fdfe3273bb79ce349f79a1383c">cv::videostab::MM_RIGID</a> = 3, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a1aca015a89be32663e700279ed2380f5">cv::videostab::MM_SIMILARITY</a> = 4, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">cv::videostab::MM_AFFINE</a> = 5, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a3071d1039ef9d542486f51a864134fb2">cv::videostab::MM_HOMOGRAPHY</a> = 6, 
<br/>
  <a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a3354f345c38aa36dbf97cc17639bf9c2">cv::videostab::MM_UNKNOWN</a> = 7
<br/>
 }<tr class="memdesc:gac61e59db30b7d13983885d3ad3116ce1"><td class="mdescLeft"> </td><td class="mdescRight">Describes motion model between two point clouds.  <a href="../../d4/d2c/group__videostab__motion.html#gac61e59db30b7d13983885d3ad3116ce1">More...</a><br/></td></tr>
</td></tr>
<tr class="separator:gac61e59db30b7d13983885d3ad3116ce1"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gab213d5ccfc50909eace156ca0102c162"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#gab213d5ccfc50909eace156ca0102c162">cv::videostab::GaussianMotionFilter::GaussianMotionFilter</a> (int <a class="el" href="../../de/d06/classcv_1_1videostab_1_1GaussianMotionFilter.html#a32e98c2417c5fe2f5cfea5eef7113cc0">radius</a>=15, float <a class="el" href="../../de/d06/classcv_1_1videostab_1_1GaussianMotionFilter.html#ac4150e7d3b37cdb95442e2a633941cb7">stdev</a>=-1.f)</td></tr>
<tr class="separator:gab213d5ccfc50909eace156ca0102c162"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0f1dea7ffe8b8d5953f3f6e50e87dde4"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#ga0f1dea7ffe8b8d5953f3f6e50e87dde4">cv::videostab::RansacParams::RansacParams</a> (int <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#a1c3369153b15c7f673d2afd5b07a55c1">size</a>, float <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#a2558a62a1e6b2ad8f47222f175348a6b">thresh</a>, float <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#a12a0a87af93c54e5b9dd67aea517d2dd">eps</a>, float <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#aa43b08b4dfbc551b19f1217f8c67f5ca">prob</a>)</td></tr>
<tr class="memdesc:ga0f1dea7ffe8b8d5953f3f6e50e87dde4"><td class="mdescLeft"> </td><td class="mdescRight">Constructor.  <a href="#ga0f1dea7ffe8b8d5953f3f6e50e87dde4">More...</a><br/></td></tr>
<tr class="separator:ga0f1dea7ffe8b8d5953f3f6e50e87dde4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8e28e77e2b7582f3c022e9772117d045"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#ga8e28e77e2b7582f3c022e9772117d045">cv::videostab::ensureInclusionConstraint</a> (const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp;M, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> size, float trimRatio)</td></tr>
<tr class="separator:ga8e28e77e2b7582f3c022e9772117d045"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8fa2f6a88df65ad78241783faffc26a8"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#ga8fa2f6a88df65ad78241783faffc26a8">cv::videostab::estimateGlobalMotionLeastSquares</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> points0, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> points1, int model=<a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">MM_AFFINE</a>, float *rmse=0)</td></tr>
<tr class="memdesc:ga8fa2f6a88df65ad78241783faffc26a8"><td class="mdescLeft"> </td><td class="mdescRight">Estimates best global motion between two 2D point clouds in the least-squares sense.  <a href="../../d4/d2c/group__videostab__motion.html#ga8fa2f6a88df65ad78241783faffc26a8">More...</a><br/></td></tr>
<tr class="separator:ga8fa2f6a88df65ad78241783faffc26a8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6260bd61792a7ec94ea974af9d94ead7"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#ga6260bd61792a7ec94ea974af9d94ead7">cv::videostab::estimateGlobalMotionRansac</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> points0, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> points1, int model=<a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">MM_AFFINE</a>, const <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html">RansacParams</a> &amp;params=<a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#a30dc41affb537f4c8af23bebc18defa1">RansacParams::default2dMotion</a>(<a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">MM_AFFINE</a>), float *rmse=0, int *ninliers=0)</td></tr>
<tr class="memdesc:ga6260bd61792a7ec94ea974af9d94ead7"><td class="mdescLeft"> </td><td class="mdescRight">Estimates best global motion between two 2D point clouds robustly (using RANSAC method).  <a href="../../d4/d2c/group__videostab__motion.html#ga6260bd61792a7ec94ea974af9d94ead7">More...</a><br/></td></tr>
<tr class="separator:ga6260bd61792a7ec94ea974af9d94ead7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab049af45e7db622406b58686e81fa5e2"><td align="right" class="memItemLeft" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#gab049af45e7db622406b58686e81fa5e2">cv::videostab::estimateOptimalTrimRatio</a> (const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp;M, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> size)</td></tr>
<tr class="separator:gab049af45e7db622406b58686e81fa5e2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1ea168631bcaeda9fb62aa5bab4dddd2"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d2c/group__videostab__motion.html#ga1ea168631bcaeda9fb62aa5bab4dddd2">cv::videostab::getMotion</a> (int from, int to, const std::vector&lt; <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &gt; &amp;motions)</td></tr>
<tr class="memdesc:ga1ea168631bcaeda9fb62aa5bab4dddd2"><td class="mdescLeft"> </td><td class="mdescRight">Computes motion between two frames assuming that all the intermediate motions are known.  <a href="../../d4/d2c/group__videostab__motion.html#ga1ea168631bcaeda9fb62aa5bab4dddd2">More...</a><br/></td></tr>
<tr class="separator:ga1ea168631bcaeda9fb62aa5bab4dddd2"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a id="details" name="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>The video stabilization module contains a set of functions and classes for global motion estimation between point clouds or between images. In the last case features are extracted and matched internally. For the sake of convenience the motion estimation functions are wrapped into classes. Both the functions and the classes are available. </p>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="gac61e59db30b7d13983885d3ad3116ce1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac61e59db30b7d13983885d3ad3116ce1">◆ </a></span>MotionModel</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="../../d4/d2c/group__videostab__motion.html#gac61e59db30b7d13983885d3ad3116ce1">cv::videostab::MotionModel</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../de/d4e/motion__core_8hpp.html">opencv2/videostab/motion_core.hpp</a>&gt;</code></p>
<p>Describes motion model between two point clouds. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1ad150f24197611b08a99e45c5a93ef264"></a>MM_TRANSLATION <div class="python_language">Python: cv.videostab.MM_TRANSLATION</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a3d76e30fb2c762645cbd8c83b2d4d556"></a>MM_TRANSLATION_AND_SCALE <div class="python_language">Python: cv.videostab.MM_TRANSLATION_AND_SCALE</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a2765d1659d5a36bdd1c356396a624ae1"></a>MM_ROTATION <div class="python_language">Python: cv.videostab.MM_ROTATION</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a633545fdfe3273bb79ce349f79a1383c"></a>MM_RIGID <div class="python_language">Python: cv.videostab.MM_RIGID</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a1aca015a89be32663e700279ed2380f5"></a>MM_SIMILARITY <div class="python_language">Python: cv.videostab.MM_SIMILARITY</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36"></a>MM_AFFINE <div class="python_language">Python: cv.videostab.MM_AFFINE</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a3071d1039ef9d542486f51a864134fb2"></a>MM_HOMOGRAPHY <div class="python_language">Python: cv.videostab.MM_HOMOGRAPHY</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac61e59db30b7d13983885d3ad3116ce1a3354f345c38aa36dbf97cc17639bf9c2"></a>MM_UNKNOWN <div class="python_language">Python: cv.videostab.MM_UNKNOWN</div></td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="gab213d5ccfc50909eace156ca0102c162"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab213d5ccfc50909eace156ca0102c162">◆ </a></span>GaussianMotionFilter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::videostab::GaussianMotionFilter::GaussianMotionFilter </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>radius</em> = <code>15</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>stdev</em> = <code>-1.f</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d38/motion__stabilizing_8hpp.html">opencv2/videostab/motion_stabilizing.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga0f1dea7ffe8b8d5953f3f6e50e87dde4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0f1dea7ffe8b8d5953f3f6e50e87dde4">◆ </a></span>RansacParams()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::videostab::RansacParams::RansacParams </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>thresh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>eps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>prob</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../de/d4e/motion__core_8hpp.html">opencv2/videostab/motion_core.hpp</a>&gt;</code></p>
<p>Constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>Subset size. </td></tr>
    <tr><td class="paramname">thresh</td><td>Maximum re-projection error value to classify as inlier. </td></tr>
    <tr><td class="paramname">eps</td><td>Maximum ratio of incorrect correspondences. </td></tr>
    <tr><td class="paramname">prob</td><td>Required success probability. </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<a id="ga8e28e77e2b7582f3c022e9772117d045"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8e28e77e2b7582f3c022e9772117d045">◆ </a></span>ensureInclusionConstraint()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> cv::videostab::ensureInclusionConstraint </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp; </td>
          <td class="paramname"><em>M</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>trimRatio</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d38/motion__stabilizing_8hpp.html">opencv2/videostab/motion_stabilizing.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga8fa2f6a88df65ad78241783faffc26a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8fa2f6a88df65ad78241783faffc26a8">◆ </a></span>estimateGlobalMotionLeastSquares()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> cv::videostab::estimateGlobalMotionLeastSquares </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>points0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>points1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>model</em> = <code><a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">MM_AFFINE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float * </td>
          <td class="paramname"><em>rmse</em> = <code>0</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d1/d44/global__motion_8hpp.html">opencv2/videostab/global_motion.hpp</a>&gt;</code></p>
<p>Estimates best global motion between two 2D point clouds in the least-squares sense. </p>
<dl class="section note"><dt>Note</dt><dd>Works in-place and changes input point arrays.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">points0</td><td>Source set of 2D points (32F). </td></tr>
    <tr><td class="paramname">points1</td><td>Destination set of 2D points (32F). </td></tr>
    <tr><td class="paramname">model</td><td>Motion model (up to MM_AFFINE). </td></tr>
    <tr><td class="paramname">rmse</td><td>Final root-mean-square error. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>3x3 2D transformation matrix (32F). </dd></dl>
</div>
</div>
<a id="ga6260bd61792a7ec94ea974af9d94ead7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6260bd61792a7ec94ea974af9d94ead7">◆ </a></span>estimateGlobalMotionRansac()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> cv::videostab::estimateGlobalMotionRansac </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>points0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>points1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>model</em> = <code><a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">MM_AFFINE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html">RansacParams</a> &amp; </td>
          <td class="paramname"><em>params</em> = <code><a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html#a30dc41affb537f4c8af23bebc18defa1">RansacParams::default2dMotion</a>(<a class="el" href="../../d4/d2c/group__videostab__motion.html#ggac61e59db30b7d13983885d3ad3116ce1a30b3b23d3cdd42fd8a7c4e286472de36">MM_AFFINE</a>)</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float * </td>
          <td class="paramname"><em>rmse</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int * </td>
          <td class="paramname"><em>ninliers</em> = <code>0</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d1/d44/global__motion_8hpp.html">opencv2/videostab/global_motion.hpp</a>&gt;</code></p>
<p>Estimates best global motion between two 2D point clouds robustly (using RANSAC method). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">points0</td><td>Source set of 2D points (32F). </td></tr>
    <tr><td class="paramname">points1</td><td>Destination set of 2D points (32F). </td></tr>
    <tr><td class="paramname">model</td><td>Motion model. See <a class="el" href="../../d4/d2c/group__videostab__motion.html#gac61e59db30b7d13983885d3ad3116ce1" title="Describes motion model between two point clouds. ">cv::videostab::MotionModel</a>. </td></tr>
    <tr><td class="paramname">params</td><td>RANSAC method parameters. See <a class="el" href="../../da/dc7/structcv_1_1videostab_1_1RansacParams.html" title="Describes RANSAC method parameters. ">videostab::RansacParams</a>. </td></tr>
    <tr><td class="paramname">rmse</td><td>Final root-mean-square error. </td></tr>
    <tr><td class="paramname">ninliers</td><td>Final number of inliers. </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<a id="gab049af45e7db622406b58686e81fa5e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab049af45e7db622406b58686e81fa5e2">◆ </a></span>estimateOptimalTrimRatio()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float cv::videostab::estimateOptimalTrimRatio </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp; </td>
          <td class="paramname"><em>M</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>size</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d38/motion__stabilizing_8hpp.html">opencv2/videostab/motion_stabilizing.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga1ea168631bcaeda9fb62aa5bab4dddd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1ea168631bcaeda9fb62aa5bab4dddd2">◆ </a></span>getMotion()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> cv::videostab::getMotion </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &gt; &amp; </td>
          <td class="paramname"><em>motions</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d1/d44/global__motion_8hpp.html">opencv2/videostab/global_motion.hpp</a>&gt;</code></p>
<p>Computes motion between two frames assuming that all the intermediate motions are known. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">from</td><td>Source frame index. </td></tr>
    <tr><td class="paramname">to</td><td>Destination frame index. </td></tr>
    <tr><td class="paramname">motions</td><td>Pair-wise motions. motions[i] denotes motion from the frame i to the frame i+1 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Motion from the Source frame to the Destination frame. </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:41 for OpenCV by  <a href="http://www.doxygen.org/index.html">
<img alt="doxygen" class="footer" src="../../doxygen.png"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
